/* 
1 页面加载的时候
  1 从缓存中获取购物车数据 渲染到页面中
    这些数据  checked=true 
2 微信支付
  1 哪些人 哪些帐号 可以实现微信支付
    1 企业帐号 
    2 企业帐号的小程序后台中 必须 给开发者 添加上白名单 
      1 一个 appid 可以同时绑定多个开发者
      2 这些开发者就可以公用这个appid 和 它的开发权限  
3 支付按钮
  1 先判断缓存中有没有token
  2 没有 跳转到授权页面 进行获取token 
  3 有token 。。。
  4 创建订单 获取订单编号
  5 已经完成了微信支付
  6 手动删除缓存中 已经被选中了的商品 
  7 删除后的购物车数据 填充回缓存
  8 再跳转页面 
 */
  import { requestPayment,showToast } from "../../utils/asyncWX";
import {request} from '../../request/request'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 保存收货地址数据
    address: {},
    // 购物车数据
    cartData: [],
    // 总价格
    allPrice: 0,
    // 总数目
    allNum: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    const address = wx.getStorageSync('address') || [];
    address.all = address.provinceName + address.cityName + address.countyName + address.detailInfo
    let cartData = wx.getStorageSync("cart") || [];
    // console.log(cartData);
    // 过滤后的购物车数组
    cartData = cartData.filter(item => item.checked)
    // 计算总价格
    let allPrice = cartData.filter(item => item.checked).reduce((preVal, currentVal) => preVal + currentVal.num * currentVal.goods_price, 0)
    // console.log(allPrice);
    // 计算总数量
    let allNum = cartData.filter(item => item.checked).reduce((preVal, currentVal) => preVal + currentVal.num, 0)
    this.setData({
      address,
      cartData,
      allPrice,
      allNum
    })

  },
  // 处理支付功能
 async handlePay() {
    try {
    const token = wx.getStorageSync('token');
    // console.log(token);
    // 1 判断缓存中有没有token 
    if(!token) {
      wx.navigateTo({
        url: '/pages/auth/auth'
      });
      return
    }
    // 请求头参数：
    // 3 创建订单
    // 3.1 准备 请求头参数
    // const header = {
    //   Authorization: token
    // }
    const {address, allPrice, cartData} = this.data
    let order_price = allPrice
    let consignee_addr = address.all
    let goods = []
    cartData.forEach(item => goods.push({
      goods_id: item.goods_id,
      goods_number: item.goods_number,
      goods_price: item.goods_price
    }))
    const orderParams = {order_price, consignee_addr, goods}
    // 4 准备发送请求 创建订单 获取订单编号
    const {order_number} = await request({
      url: '/my/orders/create',
      data: orderParams,
      method: 'POST',
    })
    console.log(order_number);
    // 5 发起 预支付接口
    const { pay } = await request({ url: "/my/orders/req_unifiedorder", method: "POST", data: { order_number } });
    // 6 发起微信支付 
    await requestPayment(pay);
    // 7 查询后台 订单状态
    const res = await request({ url: "/my/orders/chkOrder", method: "POST", data: { order_number } });
    await showToast({ title: "支付成功" });
    // 8 手动删除缓存中 已经支付了的商品
    let newCart=wx.getStorageSync("cart");
    newCart=newCart.filter(v=>!v.checked);
    wx.setStorageSync("cart", newCart);
      
    // 8 支付成功了 跳转到订单页面
    wx.navigateTo({
      url: '/pages/order/index'
    });
    } catch (error) {
      await showToast({
        title: '支付失败'
      })
      console.log(error);
    }
  }
})